#!/usr/bin/python
# vim:fileencoding=utf8
import word

class Verb(word.Word):
    """
    Класс глагол.
    Хранит информацию обо всех формах глагола.
      Формы:
        число: ед., мн.
        лицо: первое, второе, третье
    (Может быть когда-нибудь потом будет герундий и времена... ^_^ )
    """
    ACCEPTABLE_FORMS = {'plurum': (True, False),
             'person': (1, 2, 3)}

    def to_string(self, **form):
        """
        Возвращает нужную форму глагола.
        """
        plurum = form.get('plurum',False)
        person = form.get('person', 0)
        if person == 3 and not plurum:
            return self.base + 's'
        else:
            return self.base

    def forms(self, word):
        if word == self.base + 's':
            return [{'person':3, 'plurum':False}]
        else:
            return [{'person':1}, {'person':2}, {'person':3, 'plurum':True}]

        
    @staticmethod
    def base_form(word):
        """
        Пытается нагенерить базовую форму глагола.
        На вход получает строку, на выходе имеем список тупликов,
        (база, грамматическая форма). Сори за туфтологию. =\
        """
        res = []
        res.append( (word, {}) )
        if word.endswith("s"):
            res.append( (word[:-1], {'person':3, 'plurum':False}) )
        return res
